home *** CD-ROM | disk | FTP | other *** search
- PROGRAM dbftst; {Automenuing activity logging system.}
- USES dos, crt, { Turbo provided units }
- string0, { string utilities }
- sl_file0; { file utilities }
- CONST
- copyright = 'Copyright 1992 by Brandon C. Smith.';
- address = 'P. O. Box 613, Mansfield, MO, 65704';
- phone = '(417)-924-8021';
- version = 0.01;
-
-
- TYPE
- dbf_hdr_structure =
- record
- version_mrk : byte;
- Last_update : array[1..3] of byte;
- Num_recs : longint;
- hdr_size : integer;
- rec_size : integer;
- rsrv_1 : word;
- trns_flag : byte;
- encpt_flag : byte;
- multi_info : array[1..12] of byte;
- mdx_flag : byte;
- rsrv_2 : array[1..3] of byte;
- end;
-
-
- raw_fld_structure =
- record
- fld_name : array[1..11] of byte;
- fld_type : byte;
- rsrv_1 : longint;
- fld_len : byte;
- fld_dec : byte;
- rsrv_2 : word;
- wrk_area_id : byte;
- rsrv_3 : array[1..10] of byte;
- mdx_tag : byte;
- end;
-
- wrk_fld_ptr = ^wrk_fld_structure;
-
- wrk_fld_structure =
- record
- fld_name : string[11];
- fld_type : byte;
- fld_len : byte;
- fld_dec : byte;
- nxt_fld : wrk_fld_ptr;
- end;
-
-
- VAR
-
- dbf_hdr : dbf_hdr_structure;
- raw_fld : raw_fld_structure;
- wrk_fld : wrk_fld_structure;
- prv_fld_ptr,
- fst_fld_ptr,
- cur_fld_ptr : wrk_fld_ptr;
-
- fn : filename;
-
-
-
- VAR
-
- dbfp : file;
- f_err : word;
- num_flds : byte;
- i : byte; { for looping through fields... }
-
-
-
-
- Function make_str_from_asciiz(var s):string;
- type
- bytes = array[0..MaxInt] of Byte;
-
- var
- i : byte;
- tmp_str : string;
-
- begin
- i := 0;
- while bytes(s)[i] <> 0 do
- begin
- tmp_str := tmp_str + chr(bytes(s)[i]);
- inc(i);
- end;
- make_str_from_asciiz := tmp_str;
- end;
-
- PROCEDURE read_nxt_fld;
- BEGIN
- BlockRead(dbfp, raw_fld, SizeOf(raw_fld_structure), f_err);
- new(cur_fld_ptr);
- cur_fld_ptr^.fld_name := make_str_from_asciiz(raw_fld.fld_name);
- cur_fld_ptr^.fld_type := raw_fld.fld_type;
- cur_fld_ptr^.fld_len := raw_fld.fld_len;
- cur_fld_ptr^.fld_dec := raw_fld.fld_dec;
- cur_fld_ptr^.nxt_fld := nil;
- END;
-
-
- BEGIN
-
-
-
-
- fn := 'hexlukup.dbf';
- open_to_read_byte(dbfp, fn, f_err);
- blockRead(dbfp, dbf_hdr, sizeOf(dbf_hdr_structure), f_err);
- num_flds := (dbf_hdr.hdr_size - sizeOf(dbf_hdr_structure)) div 32;
- read_nxt_fld;
- fst_fld_ptr := cur_fld_ptr;
- prv_fld_ptr := cur_fld_ptr;
-
- for i := 1 to num_flds do
- begin
- read_nxt_fld;
- prv_fld_ptr^.nxt_fld := cur_fld_ptr;
- prv_fld_ptr := cur_fld_ptr;
- end;
-
-
-
-
-
- close(dbfp);
-
- end.
-